Bloque 2.1 · 25 min

Modelo Entidad-Relación (E-R)

El Modelo Entidad-Relación es el punto de partida en el diseño de cualquier base de datos moderna. Antes de crear tablas o escribir SQL, el modelo E-R permite representar visualmente cómo se organiza la información.

Su objetivo es traducir el mundo real al lenguaje de los datos: clientes, productos, pedidos, alumnos o canciones se convierten en entidades conectadas mediante relaciones.

¿Qué representa un modelo E-R?

  • Entidades: objetos o conceptos del sistema.
  • Atributos: características de cada entidad.
  • Relaciones: vínculos entre entidades.
  • Claves: identificadores únicos.
Ejemplo:
En una academia: Alumno → entidad
nombre, email, edad → atributos
id_alumno → clave primaria

Ejemplo SQL derivado del modelo E-R

CREATE TABLE Alumno (
  id_alumno INT PRIMARY KEY,
  nombre VARCHAR(100),
  email VARCHAR(100),
  edad INT
);
Consejo:
El modelo E-R es conceptual. Todavía no define cómo se almacenan físicamente los datos.
Pregunta trampa:
“El modelo E-R solo sirve para bases de datos grandes.” ❌ Falso. Incluso aplicaciones pequeñas necesitan diseño conceptual.
¿Cuál es el objetivo principal del modelo E-R?
Bloque 2.2 · 25 min

Entidades, atributos y claves

Entidades

Una entidad representa un objeto del mundo real que queremos almacenar en la base de datos.

  • Cliente
  • Producto
  • Pedido
  • Empleado

Atributos

Son las propiedades que describen a una entidad.

Entidad Atributos
Cliente nombre, email, teléfono
Producto precio, stock, categoría

Tipos de atributos

  • Descriptivos: nombre, edad, dirección.
  • Identificadores: id_cliente, id_producto.
CREATE TABLE Producto (
  id_producto INT PRIMARY KEY,
  nombre VARCHAR(100),
  precio DECIMAL(10,2),
  stock INT
);
Si dos productos tienen el mismo nombre, el sistema sigue diferenciándolos gracias a id_producto.
Importante:
Toda entidad debe tener una clave primaria única.
¿Qué representa un atributo?
Bloque 2.3 · 30 min

Claves primarias, alternas y foráneas

Clave primaria (Primary Key)

Identifica de forma única cada registro.

id_cliente INT PRIMARY KEY

Clave alterna

Puede identificar registros, aunque no es la principal.

  • DNI
  • Email
  • Número de pasaporte

Clave foránea (Foreign Key)

Conecta entidades distintas.

CREATE TABLE Pedido (
  id_pedido INT PRIMARY KEY,
  fecha DATE,
  id_cliente INT,
  FOREIGN KEY (id_cliente)
  REFERENCES Cliente(id_cliente)
);
La clave foránea garantiza integridad referencial: un pedido no puede existir sin cliente.
Tipo de clave Función
Primaria Identifica registros
Alterna Identificador secundario
Foránea Relaciona tablas
Muchos alumnos confunden: Primary Key ≠ Foreign Key.
¿Qué hace una clave foránea?
Bloque 2.4 · 20 min

Beneficios del modelo E-R

El modelo E-R permite detectar errores antes de implementar la base de datos.

Ventajas principales

  • Evita redundancias.
  • Mejora la integridad de datos.
  • Facilita mantenimiento.
  • Permite escalabilidad.
  • Ayuda al trabajo en equipo.
Si “nombre_cliente” aparece repetido en varias tablas, el modelo E-R ayuda a centralizar la información.

Impacto profesional

Analistas, desarrolladores y administradores utilizan diagramas E-R para coordinar diseño y lógica de negocio.

Un buen modelo conceptual reduce errores y costes futuros.
¿Qué problema ayuda a evitar el modelo E-R?
Bloque 2.5 · 25 min

Relaciones

Las relaciones describen cómo interactúan las entidades.

Ejemplos reales

  • Cliente realiza pedidos.
  • Alumno se matricula en cursos.
  • Empleado supervisa empleados.

Relaciones en SQL

CREATE TABLE Pedido (
  id_pedido INT PRIMARY KEY,
  id_cliente INT,
  FOREIGN KEY (id_cliente)
  REFERENCES Cliente(id_cliente)
);
La relación conecta Pedido con Cliente mediante id_cliente.
Las relaciones representan lógica de negocio real.
¿Qué representa una relación?
Bloque 2.6 · 30 min

Cardinalidades

1:1 (Uno a Uno)

Una persona tiene un único pasaporte.

1:N (Uno a Muchos)

Un cliente puede tener muchos pedidos.

N:M (Muchos a Muchos)

Muchos alumnos pueden matricularse en muchos cursos.

Tabla intermedia

CREATE TABLE Matricula (
  id_alumno INT,
  id_curso INT,
  fecha DATE,
  PRIMARY KEY(id_alumno,id_curso)
);
Cardinalidad Ejemplo
1:1 Persona → Pasaporte
1:N Cliente → Pedido
N:M Alumno ↔ Curso
Las relaciones N:M NO se implementan directamente: necesitan tabla intermedia.
¿Qué cardinalidad necesita una tabla puente?
Bloque 2.7 · 25 min

Jerarquías: generalización y especialización

Generalización

Agrupa entidades específicas en una más general.

Programador y Diseñador → Empleado

Especialización

Crea subtipos desde una entidad general.

Cliente → ClienteVIP

Ventajas

  • Evita duplicidad.
  • Facilita mantenimiento.
  • Permite herencia de atributos.
CREATE TABLE Empleado (
  id_empleado INT PRIMARY KEY,
  nombre VARCHAR(100),
  salario DECIMAL(10,2)
);

CREATE TABLE Programador (
  id_empleado INT PRIMARY KEY,
  lenguaje VARCHAR(50),
  FOREIGN KEY(id_empleado)
  REFERENCES Empleado(id_empleado)
);
¿Qué hace una especialización?
Bloque 2.8 · 20 min

Caso de estudio: Spotify

Spotify gestiona millones de canciones, usuarios y listas de reproducción.

Entidades principales

  • Usuario
  • Canción
  • Lista de reproducción

Relación importante

Lista ↔ Canción es una relación N:M.

CREATE TABLE ListaCancion (
  id_lista INT,
  id_cancion INT,
  PRIMARY KEY(id_lista,id_cancion)
);
Una canción puede aparecer en muchas listas. Una lista puede contener muchas canciones.
Spotify utiliza modelos relacionales y distribuidos para escalar globalmente.
¿Qué tipo de relación existe entre Lista y Canción?
Bloque 2.9 · 25 min

Caso de estudio: Amazon

Amazon necesita gestionar pedidos, productos, empleados y clientes a escala global.

Relaciones principales

  • Cliente → Pedido (1:N)
  • Pedido ↔ Producto (N:M)
  • Empleado → Envío (1:N)

Tabla intermedia

CREATE TABLE OrderItems (
  order_id INT,
  product_id INT,
  quantity INT,
  unit_price DECIMAL(10,2)
);
OrderItems permite calcular cantidades, devoluciones y facturación.
Amazon utiliza jerarquías para diferenciar repartidores y gestores.
¿Qué almacena la tabla OrderItems?
Bloque 2.10 · 30 min

Biblioteca digital y Workbench

Una red de bibliotecas públicas desea centralizar préstamos y usuarios mediante un modelo E-R.

Entidades

Entidad Clave primaria
Libro id_libro
Usuario id_usuario
Préstamo id_prestamo

Modelo SQL

CREATE TABLE Prestamo (
  id_prestamo INT PRIMARY KEY,
  fecha_prestamo DATE,
  fecha_devolucion DATE,
  id_usuario INT,
  id_libro INT,
  FOREIGN KEY(id_usuario)
  REFERENCES Usuario(id_usuario),
  FOREIGN KEY(id_libro)
  REFERENCES Libro(id_libro)
);

Flujo en Workbench

  • Crear modelo EER
  • Definir entidades
  • Asignar claves
  • Crear relaciones
  • Validar modelo
  • Forward Engineer
Workbench puede generar automáticamente el SQL desde el diagrama visual.
Workbench NO diseña correctamente la base de datos por sí solo. El diseñador debe pensar la lógica.
¿Qué opción genera automáticamente el SQL en Workbench?